package com.xiangge.supermarket2.dao;
import com.xiangge.supermarket2.enetity.UserInfo;

import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;

public class UserInfoManager {
        private Set<UserInfo> userInfos = new HashSet<>(); // 使用HashSet存储会员信息
        private static final AtomicInteger nextId = new AtomicInteger(1004);

        // 初始化方法
        public void inital() {
            userInfos.add(new UserInfo("1001","蔡徐坤","铂金卡",2000,"合法账户"));
            userInfos.add(new UserInfo("1002","范建强","钻石卡",5000,"被禁账户"));
            userInfos.add(new UserInfo("1003","高启强","金卡",500,"合法账户"));
        }

        // 主菜单方法
        public void mainMenu() {
            Scanner scanner = new Scanner(System.in);
            while (true) {
                System.out.println("===============欢迎来到超市用户管理系统=====================");
                System.out.println("1.查询会员信息");
                System.out.println("2.删除会员");
                System.out.println("3.新增会员信息");
                System.out.println("4.退出");
                System.out.print("请选择功能（1-4）: ");
                System.out.println("======================================================");

                int choice = scanner.nextInt();
                switch (choice) {
                    case 1:
                        searchAll();
                        break;
                    case 2:
                        deleteUserInfo();
                        break;
                    case 3:
                        addUserInfo();
                        break;
                    case 4:
                        System.out.println("程序已退出。");
                        scanner.close();
                        return;
                    default:
                        System.out.println("无效的选择，请重新输入。");
                }
            }
        }

        // 查看所有会员信息的方法
        private void searchAll() {
            System.out.println("用户ID\t账号\t卡类型\t积分\t卡片状态");
            for (UserInfo userInfo : userInfos) {
                System.out.println(""+userInfo.getId()+"\t"+userInfo.getName()+"\t"+userInfo.getType()+"\t"+userInfo.getIntegration()+"\t"+userInfo.getState());
            }
        }

        // 删除会员信息的方法
        private void deleteUserInfo() {
            // 实现删除会员信息的逻辑，包括提示和确认
            // 这里省略具体实现
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入要删除的会员ID: ");
            int memberIdToDelete = scanner.nextInt();
            scanner.nextLine();
            UserInfo userInfo = new UserInfo();
            for (UserInfo userInfo1 : userInfos) {
                if (userInfo1.getId().equals(memberIdToDelete)) {
                    userInfo = userInfo1;
                    break;
                }
            }
            if (userInfo != null) {
                System.out.println("确认删除吗？(Y/N): ");
                String confirm = scanner.next();
                if (confirm.equalsIgnoreCase("y")) {
                    userInfos.remove(userInfo);
                    System.out.println("会员信息已删除。");
                } else {
                    System.out.println("取消删除操作。");
                }
            } else {
                System.out.println("未找到该会员信息。");
            }
        }

        // 新增会员信息的方法
        private void addUserInfo() {
            // 实现新增会员信息的逻辑，包括生成随机ID
            // 这里省略具体实现
            Scanner scanner = new Scanner(System.in);
            UserInfo newUserInfo = null;

            do {
                int newId = nextId.getAndIncrement(); // 获取并递增下一个ID
                System.out.print("请输入新会员的名字: ");
                String name = scanner.nextLine();
                System.out.print("请输入新会员的卡类型: ");
                String type = scanner.nextLine();
                System.out.print("请输入新会员的积分: ");
                int integration = scanner.nextInt();
                scanner.nextLine(); // 消耗掉nextInt()留下的换行符
                System.out.print("请输入新会员的卡片状态: ");
                String state = scanner.nextLine();

                // 创建新的UserInfo对象
                newUserInfo = new UserInfo(String.valueOf(newId), name, type, integration, state);

                // 检查新会员的ID是否已存在
            } while (userInfos.contains(newUserInfo)); // 如果已存在，则继续循环生成新ID

            // 添加新的UserInfo到集合中
            userInfos.add(newUserInfo);
            System.out.println("会员信息已添加，ID为: " + newUserInfo.getId());
            // 注意：在实际应用中，mainMenu方法中已经关闭了scanner，这里不需要再次关闭
            // 但如果你从mainMenu方法中移除了scanner的关闭逻辑，则应该在这里关闭scanner
        }
}

